const {
	Controller
} = require('uni-cloud-router');
const {
	success,
	exception,
	error,
	typeOf,
	Result,
	StatusEnum
} = require("lg-utils");
module.exports = class CommonController extends Controller {

	/***
		 @type GET 
		 @description : xxx
	     @param {}
	***/
	async xxx() {
		try {
			const {
				service,
				data = {}
			} = this.ctx;

			return await service.common.xxx() || {};

		} catch (e) {
			return exception(this, "xxx;", e);
		}

	}
	/***
		 @type GET 
		 @description : 获取指定字段所有stock对象;
	     @param {}
	***/
	async getStockBaseAllByFields() {
		try {
			const {
				service,
				data 
			} = this.ctx;

			return await service.common.getStockBaseAllByFields(data) || {};

		} catch (e) {
			return exception(this, "获取指定字段所有stock对象异常;", e);
		}

	}
	/***
		 @type GET 
		 @description : 更新单项数据data
	     @param {
			 where = {}, 条件
			 data = ""   push的数据项
		 }
	***/
	async updateIterDate() {
		try {
			const {
				service,
				data = {}
			} = this.ctx;

			return await service.common.updateIterDate(data) || {};

		} catch (e) {
			return exception(this, "更新单项数据data异常;", e);
		}

	}

	/***
		 @type GET 
		 @description : 新增stock
	     @param {}
	***/
	async addIterWithStock() {
		try {
			const {
				service,
				data = {}
			} = this.ctx;

			return await service.common.addIterWithStock(data) || {};

		} catch (e) {
			return exception(this, "stockBase新增数据项异常;", e);
		}

	}

	/***
		 @type GET 
		 @description : 根据差值更新股票基本信息列表，股票symbol字典;
	     @param {}
	***/
	async updateStockInfoToDiff() {
		try {
			const {
				service,
				data = {}
			} = this.ctx;

			return await service.common.updateStockInfoToDiff() || {};

		} catch (e) {
			return exception(this, "根据差值更新股票基本信息列表，股票symbol字典异常;", e);
		}

	}




	/***
		 @type GET 
		 @description : 获取股票symbol列表
	     @param {}
	***/
	async getStockSymbolList() {
		try {
			const {
				service,
				data = {}
			} = this.ctx;

			return await service.common.getStockSymbolList();

		} catch (e) {
			return exception(this, "获取股票symbol列表异常;", e);
		}

	}

	/***
		 @type GET 
		 @description : 新增股票symbol集合到数据字典;
	     @param {}
	***/
	async addStockSymbolListToDict() {
		try {
			const {
				service,
				data
			} = this.ctx;
			return await service.common.addStockSymbolListToDict() || {};

		} catch (e) {
			return exception(this, "新增股票symbol集合到数据字典异常;", e);
		}

	}

	/***
		 @type GET 
		 @description : 根据docID更新基金基本信息文档
	     @param {
			 docId:"",  文档ID
			 content:{} 更新内容
		 }
	***/
	async updateBaseInfoListWithStockById() {
		try {
			const {
				service,
				data = {}
			} = this.ctx;

			const {
				affectedDocs,
				updated: count
			} = await service.common.updateBaseInfoListWithStockById(data) || {};
			if (typeOf(affectedDocs, StatusEnum.UNDEFINED)) {
				return error("根据docID更新基金基本信息文档service异常;", affectedDocs);
			} else {
				return success(count);
			}

		} catch (e) {
			return exception(this, "根据docID更新基金基本信息文档异常;", e);
		}

	}

	/***
		 @type GET 
		 @description : 批量更新基金基本信息列表
	     @param {
			 where:{},  过滤的条件
			 content:{} 更新数据
		 }
	***/
	async updateBaseInfoListWithStockByWhere() {
		try {
			const {
				service,
				data = {}
			} = this.ctx;

			const {
				affectedDocs,
				data: list
			} = await service.common.updateBaseInfoListWithStockByWhere(data) || {};
			if (typeOf(affectedDocs, StatusEnum.UNDEFINED)) {
				return error("批量更新基金基本信息列表请求异常;affectedDocs:undefined;", affectedDocs);
			} else {
				return success(list);
			}

		} catch (e) {
			return exception(this, "批量更新基金基本信息列表异常;", e);
		}

	}

	/***
		 @type GET 
		 @description : 获取基金基本信息列表
		 @param {
			where = {},  查询条件
			limit = 100, 限制返回条数 
			field = {},  返回字段
			orderField = "_id", 排序字段
			orderType = "asc",  排序规则 [asc,desc]
		}
	***/
	async getBaseInfoListWithStock() {
		try {
			const {
				service,
				data = {}
			} = this.ctx;

			const {
				affectedDocs,
				data: list
			} = await service.common.getBaseInfoListWithStock(data) || {};
			if (typeOf(affectedDocs, StatusEnum.UNDEFINED)) {
				return error("查询基金基本信息请求异常;affectedDocs:undefined;", affectedDocs);
			} else {
				return success(list);
			}

		} catch (e) {
			return exception(this, "获取基金基本信息列表异常;", e);
		}

	}

	/***
		 @type GET 
		 @description : 删除基金基本信息所有数据
		 @param {}
	***/
	async removeAllOfBaseInfoListWithStock() {
		try {
			const {
				service,
				data = {}
			} = this.ctx;

			const {
				affectedDocs,
				deleted: count
			} = await service.common.removeAllOfBaseInfoListWithStock() || {};
			if (typeOf(affectedDocs, StatusEnum.UNDEFINED)) {
				return error("删除基金基本信息所有数据异常;affectedDocs:undefined;", affectedDocs);
			} else {
				return success(count);
			}

		} catch (e) {
			return exception(this, "删除所有基金基本信息异常;", e);
		}

	}

}
